package fr.ifsic.film.client.ui;

import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.Grid;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.TextBox;

import fr.ifsic.film.client.FilmProject;
import fr.ifsic.film.client.dto.FilmDTO;
import fr.ifsic.film.client.dto.PersonneDTO;

public class NouveauFilm extends NouveauType {

	TextBox titre, annee, genre, duree;
	ListBox realisateur;
	PersonneDTO[] pdto;

	public NouveauFilm() {
		super("Entrez un film");

		Grid grid = new Grid(5, 2);
		verticalPanel.add(grid);

		Label labelTitre = new Label("Titre");
		grid.setWidget(0, 0, labelTitre);

		titre = new TextBox();
		grid.setWidget(0, 1, titre);

		Label labelAnnee = new Label("Annee");
		grid.setWidget(1, 0, labelAnnee);

		annee = new TextBox();
		grid.setWidget(1, 1, annee);

		Label labelRealisateur = new Label("Realisateur");
		grid.setWidget(2, 0, labelRealisateur);

		realisateur = new ListBox();
		grid.setWidget(2, 1, realisateur);

		Label labelGenre = new Label("Genre");
		grid.setWidget(3, 0, labelGenre);

		genre = new TextBox();
		grid.setWidget(3, 1, genre);

		Label labelDuree = new Label("Duree");
		grid.setWidget(4, 0, labelDuree);

		duree = new TextBox();
		grid.setWidget(4, 1, duree);

		horizontalPanel.add(confirmer);
		horizontalPanel.add(annuler);
	}

	public void refreshListe() {
		FilmProject.greetingService
				.listPersonne(new AsyncCallback<PersonneDTO[]>() {

					@Override
					public void onFailure(Throwable caught) {
					}

					@Override
					public void onSuccess(PersonneDTO[] result) {
						while (realisateur.getItemCount() > 0)
							realisateur.removeItem(0);

						pdto = result;
						for (PersonneDTO p : result) {
							realisateur.addItem(p.getNom() + " "
									+ p.getPrenom());
						}

					}
				});
	}

	protected void confirmer() {
		FilmProject.changePage(FilmProject.accueil);
		FilmDTO fdto = new FilmDTO(pdto[realisateur.getSelectedIndex()],
				titre.getText(), annee.getText(), genre.getText(),
				duree.getText());
		FilmProject.greetingService.addF(fdto, new AsyncCallback<Integer>() {

			@Override
			public void onFailure(Throwable caught) {
			}

			@Override
			public void onSuccess(Integer result) {
			}
		});

		super.confirmer();
	}

}
